home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 015 / ed_print.bas < prev    next >
BASIC Source File  |  1985-05-04  |  8KB  |  211 lines

  1. 10 REM   THIS PROGRAM WAS WRITTEN AS A TEST BED FOR MY GEMINI-10X, HOWEVER
  2. 20 REM   IT MAY BE OF SOME USE AS A GEN PURPOSE UTILITY FOR THOSE OF YOU
  3. 30 REM   THAT DO NOT HAVE A PRINT UTILITY.  IF IT WERE COMPILED IT MAY BE
  4. 40 REM   A VERY GOOD PROGRAM (ONCE SPEEDED UP).
  5. 50 REM   STEVE/ESSY/CRYSTAL FRISBY 4 MAY 1985
  6. 60 CLEAR 500: DEFINT A-Z
  7. 70 DIM TF$(1),PM$(11),PM(11)
  8. 80 SCREEN 0,1:COLOR 15,1:WIDTH 80:KEY OFF
  9. 90 PW=1
  10. 100 PL=2
  11. 110 LM=3
  12. 120 RM=4
  13. 130 TM=5
  14. 140 BM=6
  15. 150 LS=7
  16. 160 NF=8
  17. 170 TF=9
  18. 180 PZ=10
  19. 190 FF=11
  20. 200 RD=0:VW=40
  21. 210 TF$(0)="NO": TF$(1)="YES": PN$="Page"
  22. 220 FOR I=1 TO 11: READ PM$(I):NEXT I
  23. 230 DATA Page width
  24. 240 DATA Page length
  25. 250 DATA Left margin
  26. 260 DATA Right mgn.
  27. 270 DATA Top margin
  28. 280 DATA Bottom mgn.
  29. 290 DATA Line space
  30. 300 DATA Number pgs
  31. 310 DATA Title pgs
  32. 320 DATA Pg-pause
  33. 330 DATA Skip headings 1st pg
  34. 340 FOR I=1 TO 11: READ PM(I):NEXT I
  35. 350 DATA 80
  36. 360 DATA 66 
  37. 370 DATA 5
  38. 380 DATA 5
  39. 390 DATA 3
  40. 400 DATA 6
  41. 410 DATA 1
  42. 420 DATA 1
  43. 430 DATA 0
  44. 440 DATA 0
  45. 450 DATA 1
  46. 460 FF$=CHR$(12)
  47. 470 CR$=CHR$(13)
  48. 480 LF$=CHR$(10)
  49. 490 TB$=CHR$(9)
  50. 500 BS$=CHR$(8)
  51. 510 SP$=" "
  52. 520 HY$="-"
  53. 530 CC$=FF$+CR$+LF$+TB$+BS$+SP$
  54. 540 CLS
  55. 550 INPUT"Which DRIVE is the Source File on [ A or B ]";SF$
  56. 560 FILES SF$+":"
  57. 570 INPUT"Print which file"; FI$
  58. 580 FI$=SF$+":"+FI$
  59. 590 ON ERROR  GOTO 1290
  60. 600 OPEN FI$ FOR INPUT AS 1
  61. 610 PRINT:PRINT "Print to which.....S=screen  P=lpt:?"
  62. 620 FO$=INKEY$
  63. 630 IF FO$="S" OR FO$="s" OR FO$="P" OR FO$="p" THEN 640 ELSE 620
  64. 640 CLS: FOR I=1 TO 7: IZ$=STR$(I):PRINT USING "\  \";IZ$;" ";:PRINT PM$(I)" ="PM(I):NEXT I
  65. 650 FOR I=8 TO 11: IZ$=STR$(I):PRINT USING "\  \";IZ$;" ";:PRINT PM$(I)" = "TF$(PM(I)):NEXT I
  66. 660 S=0:PRINT:INPUT"Change no.1-11 (RETURN=none)";S
  67. 670 IF S=0 THEN 710
  68. 680 IF S>=1 AND S<=7 THEN PRINT:PRINT"Enter a new value for '"PM$(S)"'";:INPUT PM(S):GOTO 640
  69. 690 IF S>=8 AND S<=11 THEN PRINT "'"PM$(S)"' (YES/NO)";:INPUT S1$: IF S1$="YES"OR S1$="yes" THEN PM(S)=1 ELSE IF S1$="NO" OR S1$="no" THEN PM(S)=0
  70. 700 GOTO 640
  71. 710 LW=PM(PW)-PM(LM)-PM(RM): TL=PM(PL)-PM(BM):LM$=STRING$(PM(LM),SP$)
  72. 720 CLS: IF PM(TF)=1 THEN PRINT "Enter a title, max"LW"chars.":PRINT:PRINT:LINE INPUT TI$: TI$=LEFT$(TI$,LW)
  73. 730 IF FO$="P" OR FO$="p" THEN CLS:GOTO 1350
  74. 740 C$="":B$="":PN=0
  75. 750 COLOR 15,0:WIDTH 80:CLS:PRINT "                                     PAGE 1":GOTO 860
  76. 760 PRINT"_____________________________________________________________________________":REM BOTTOM BOTDER
  77. 770 IF EOF(1) THEN PRINT:PRINT"PRINTOUT OF ";FI$;" COMPLETED"
  78. 780 IF FO$="P" OR FO$="p" THEN 860
  79. 790 IF EOF(1) OR PM(PZ)=1 THEN PRINT:PRINT "E=exit     P=lpt:     N=new file     SPACE BAR=next page":BEEP:ELSE 860
  80. 800 RD$=INKEY$
  81. 810 IF RD$="E" OR RD$="e" THEN CLS:KEY ON:FILES:END
  82. 820 IF RD$="P" OR RD$="p" THEN FO$="P":PN=PN-1:GOTO 1350
  83. 830 IF RD$="N" OR RD$="n" THEN RUN
  84. 840 IF RD$=" " THEN 860
  85. 850 GOTO 800
  86. 860 FOR T=1 TO 4:PRINT:NEXT:PRINT "_____________________________________________________________________________":REM TOP BORDER
  87. 870 PN=PN+1: LN=0
  88. 880 IF PN=RD THEN BEEP:PN=PN-1:IF EOF(1) THEN 790 ELSE 1490
  89. 890 IF LN<PM(TM) THEN GOSUB 1200: GOTO 890
  90. 900 IF PN=1 AND PM(FF)=1 THEN 930
  91. 910 IF PM(TF)=1 THEN BH$=TI$:GOSUB 1210:GOSUB 1200
  92. 920 IF PM(TF)=1 OR PM(NF)=1 THEN GOSUB 1200:LK=1:GOSUB 1240
  93. 930 IF EOF(1) THEN 1060
  94. 940 IF LN>=TL THEN 1160
  95. 950 C1$=C$: C$=INPUT$(1,1)
  96. 960 ON INSTR(1,CC$,C$) GOTO 1060,1080,1100,1120,1150,1190
  97. 970 B$=B$+C$: IF C$>=SP$ THEN CP=CP+1
  98. 980 IF CP<LW THEN WF=0: GOTO 930
  99. 990 WF=1: LB=LEN(B$): SP=1: HP=0: S=1
  100. 1000 HQ=HP:HP=INSTR(S,B$,HY$):IF HP>0 THEN S=HP+1:GOTO 1000
  101. 1010 HP=HQ:S=1:SP=0
  102. 1020 SQ=SP: SP=INSTR(S,B$,SP$):IF SP>0 THEN S=SP+1:GOTO 1020
  103. 1030 SP=SQ:BP=-(SP>HP)*SP-(HP>=SP)*HP
  104. 1040 IF BP=0 THEN GOSUB 1220: GOTO 930
  105. 1050 B1$=RIGHT$(B$,LB-BP):B$=LEFT$(B$,BP): GOSUB 1220:B$=B1$:CP=LEN(B$):GOTO 930
  106. 1060 AF=0:WF=0:IF B$>""THEN GOSUB 1220
  107. 1070 GOTO 1160
  108. 1080 IF WF=0 THEN GOSUB 1220ELSE WF=0
  109. 1090 GOTO 930
  110. 1100 IF C1$=CR$ OR AF=1 OR WF=1 THEN 930
  111. 1110 GOSUB 1220: GOTO 930
  112. 1120 I1=8-CP MOD 8: I2=LW-CP
  113. 1130 TB=-(I1<I2)*I1-(I2<=I1)*I2
  114. 1140 CP=CP+TB:B$=B$+STRING$(TB,SP$):GOTO 980
  115. 1150 B$=B$+C$:CP=CP-1:WF=0:GOTO 930
  116. 1160 IF PM(NF)=1 THEN GOSUB 1260:BH$="                                   "+PN$+STR$(PN)+".":COLOR 0,7:PRINT USING"\ \";STR$(LN+1);:COLOR 15,0:PRINT BH$: LN=LN+1
  117. 1170 IF LN<PM(PL) THEN GOSUB 1200: GOTO 1170
  118. 1180 GOTO 760
  119. 1190 IF CP=0 THEN 930ELSE 970
  120. 1200 COLOR 0,7:PRINT USING"\ \";STR$(LN+1);:COLOR 15,0:PRINT "":LN=LN+1:RETURN
  121. 1210 COLOR 0,7:PRINT USING"\ \";STR$(LN+1);:COLOR 15,0:PRINT LM$BH$:LN=LN+1:RETURN
  122. 1220 COLOR 0,7:PRINT USING"\ \";STR$(LN+1);:COLOR 15,0:PRINT LM$;
  123. 1230 PRINT B$:LN=LN+1: B$="":CP=0:LK=1
  124. 1240 IF LK<PM(LS) AND LN<TL THEN GOSUB 1200: LK=LK+1: GOTO 1240
  125. 1250 RETURN
  126. 1260 IF LN<PM(PL)-3 THEN GOSUB 1200:GOTO 1260
  127. 1270 RETURN
  128. 1280 CLS
  129. 1290 PRINT
  130. 1300 IF ERR=53 THEN PRINT "FILE ";CHR$(34)+FI$CHR$(34);" NOT LISTED":GOTO 570
  131. 1310 IF ERR=25 THEN PRINT"PRINTER ERROR!":PRINT:PRINT"TURN ON PRINTER, HIT ANY KEY";
  132. 1320 ER$=INKEY$:IF ER$=""THEN 1320
  133. 1330 IF ER$<>""THEN 1360
  134. 1340 END
  135. 1350 REM BEGINNING OF PRINTER ROUTINE
  136. 1360 SCREEN 0,1:COLOR 14,6:CLS
  137. 1370 CLOSE:C$="":B$="":CP=0:LK=1
  138. 1380 PRINT"PRINTER SETTINGS:":PRINT:PRINT
  139. 1390 PRINT "Pause between pages?  Y/N"
  140. 1400 RD$=INKEY$
  141. 1410 IF RD$="Y" OR RD$="y" THEN PM(PZ)=1:GOTO 1440
  142. 1420 IF RD$="N" OR RD$="n" THEN PM(PZ)=0:GOTO 1440
  143. 1430 GOTO 1400
  144. 1440 PRINT:INPUT "Start printing at page number";RD
  145. 1450 IF RD<2 THEN 1480
  146. 1460 IF RD>=2 THEN CLOSE 1:OPEN FI$ FOR INPUT AS 1:GOTO 740
  147. 1470 GOTO 1440
  148. 1480 OPEN FI$ FOR INPUT AS 1
  149. 1490 COLOR 14,6:CLS:PRINT:PRINT"EMPHASIZED print....Y/N ?"
  150. 1500 RD$=INKEY$
  151. 1510 IF RD$="Y" OR RD$="y" THEN LPRINT CHR$(27);CHR$(69):GOTO 1540
  152. 1520 IF RD$="N" OR RD$="n" THEN LPRINT CHR$(27);CHR$(70):GOTO 1540
  153. 1530 GOTO 1500
  154. 1540 OPEN"LPT1:"FOR OUTPUT AS 2
  155. 1550 PRINT
  156. 1560 INPUT "Align paper then press ENTER",RD$:PRINT
  157. 1570 IF EOF(1) THEN GOSUB 2040:WIDTH 80:KEY ON:CLOSE:PRINT:PRINT:PRINT"PRINTOUT OF ";FI$;" COMPLETED":PRINT:FILES:BEEP:END
  158. 1580 IF PM(PZ)=1 THEN PRINT "E=exit program  SPACE BAR=print page.";PN+1:ELSE 1630
  159. 1590 RD$=INKEY$
  160. 1600 IF RD$=" " THEN 1630
  161. 1610 IF RD$="E" OR RD$="e" THEN CLOSE:COLOR 15,0:CLS:KEY ON:FILES SF$+":":END
  162. 1620 GOTO 1590
  163. 1630 PN=PN+1: LN=0
  164. 1640 IF LN<PM(TM) THEN GOSUB 1950: GOTO 1640
  165. 1650 IF PN=1 AND PM(FF)=1 THEN 1680
  166. 1660 IF PM(TF)=1 THEN BH$=TI$:GOSUB 1960:GOSUB 1950
  167. 1670 IF PM(TF)=1 OR PM(NF)=1 THEN GOSUB 1950:LK=1:GOSUB 1990
  168. 1680 IF EOF(1) THEN 1810
  169. 1690 IF LN>=TL THEN 1910
  170. 1700 C1$=C$: C$=INPUT$(1,1)
  171. 1710 ON INSTR(1,CC$,C$) GOTO 1810,1830,1850,1870,1900,1940
  172. 1720 B$=B$+C$: IF C$>=SP$ THEN CP=CP+1
  173. 1730 IF CP<LW THEN WF=0: GOTO 1680
  174. 1740 WF=1: LB=LEN(B$): SP=1: HP=0: S=1
  175. 1750 HQ=HP:HP=INSTR(S,B$,HY$):IF HP>0 THEN S=HP+1:GOTO 1750
  176. 1760 HP=HQ:S=1:SP=0
  177. 1770 SQ=SP: SP=INSTR(S,B$,SP$):IF SP>0 THEN S=SP+1:GOTO 1770
  178. 1780 SP=SQ:BP=-(SP>HP)*SP-(HP>=SP)*HP
  179. 1790 IF BP=0 THEN GOSUB 1970: GOTO 1680
  180. 1800 B1$=RIGHT$(B$,LB-BP):B$=LEFT$(B$,BP): GOSUB 1970:B$=B1$:CP=LEN(B$):GOTO 1680
  181. 1810 AF=0:WF=0:IF B$>""THEN GOSUB 1970
  182. 1820 GOTO 1910
  183. 1830 IF WF=0 THEN GOSUB 1970ELSE WF=0
  184. 1840 GOTO 1680
  185. 1850 IF C1$=CR$ OR AF=1 OR WF=1 THEN 1680
  186. 1860 GOSUB 1970: GOTO 1680
  187. 1870 I1=8-CP MOD 8: I2=LW-CP
  188. 1880 TB=-(I1<I2)*I1-(I2<=I1)*I2
  189. 1890 CP=CP+TB:B$=B$+STRING$(TB,SP$):GOTO 1730
  190. 1900 B$=B$+C$:CP=CP-1:WF=0:GOTO 1680
  191. 1910 IF PM(NF)=1 THEN GOSUB 2010:BH$="                                   "+PN$+STR$(PN)+".":PRINT#2,BH$: LN=LN+1
  192. 1920 IF LN<PM(PL) THEN GOSUB 1950: GOTO 1920
  193. 1930 GOTO 1570
  194. 1940 IF CP=0 THEN 1680 ELSE 1720
  195. 1950 PRINT#2,"":LN=LN+1:RETURN
  196. 1960 PRINT#2,LM$BH$: LN=LN+1:RETURN
  197. 1970 IF B$>"" THEN PRINT #2,LM$;
  198. 1980 PRINT#2,B$:LN=LN+1: B$="":CP=0:LK=1
  199. 1990 IF LK<PM(LS) AND LN<TL THEN GOSUB 1950: LK=LK+1: GOTO 1990
  200. 2000 RETURN
  201. 2010 IF LN<PM(PL)-4 THEN GOSUB 1950:GOTO 2010
  202. 2020 RETURN
  203. 2030 END
  204. 2040 PRINT:PRINT"DO YOU WANT ANOTHER COPY  Y/N ?"
  205. 2050 RD$=INKEY$
  206. 2060 IF RD$="Y" OR Y$="y" THEN PN=0:CLS:GOTO 1350
  207. 2070 IF RD$="N" OR RD$="n" THEN COLOR 15,0:CLS:RETURN
  208. 2080 GOTO 2050
  209. 2090 END
  210. IF RD$="Y" OR Y$="y" THEN PN=0:CLS:GOTO 1350
  211. 2070 IF RD$="N" OR RD$="n" THEN C